New upstream version 1.0.6
authorBoyuan Yang <byang@debian.org>
Mon, 13 Apr 2020 22:08:06 +0000 (18:08 -0400)
committerBoyuan Yang <byang@debian.org>
Mon, 13 Apr 2020 22:08:06 +0000 (18:08 -0400)
36 files changed:
.gitignore
.travis.yml
CMakeLists.txt
NEWS.md
README.md
appveyor.yml
data/CMakeLists.txt
data/config/jp2t.json [new file with mode: 0644]
data/config/t2hk.json
data/config/t2jp.json [new file with mode: 0644]
data/config/tw2sp.json
data/dictionary/HKVariants.txt
data/dictionary/JPShinjitaiCharacters.txt [new file with mode: 0644]
data/dictionary/JPShinjitaiPhrases.txt [new file with mode: 0644]
data/dictionary/JPVariants.txt
data/dictionary/STCharacters.txt
data/dictionary/STPhrases.txt
data/dictionary/TWPhrasesIT.txt
data/dictionary/TWPhrasesOther.txt
data/dictionary/TWVariants.txt
data/scheme/st_multi.txt
node/configs.gypi
node/dicts.gypi
node/global.gypi
node/opencc.cc
node/opencc.js
node/test.js
package-lock.json [new file with mode: 0644]
package.json
src/CMakeLists.txt
src/PhraseExtract.cpp
test/CommandLineConvertTest.cpp
test/testcases/jp2t.ans [new file with mode: 0644]
test/testcases/jp2t.in [new file with mode: 0644]
test/testcases/t2jp.ans [new file with mode: 0644]
test/testcases/t2jp.in [new file with mode: 0644]

index d04819178a93bd64d5a0f464e7ff69912d027410..6de0798e2506807daa3c28ef91d10422a70e78c1 100644 (file)
@@ -2,6 +2,7 @@
 *.tgz
 .project
 .cproject
+/.vscode
 /build
 /other
 /doc/html
index 7f71b243abfc6db84cc0b8d38a1c1e2d3ab9f974..545a8383a9e85f3abfb3b4827cd6fa4fc8f8f4b1 100644 (file)
@@ -6,9 +6,9 @@ cache:
 
 node_js:
   - stable
+  - 13
   - 10
   - 8
-  - 6
 
 os:
   - linux
index 2a29415bdffc3ed9b1eb54472343bbe37fd36670..5c9ee72e39709154f48bb38dc4dbdfb20212fac7 100644 (file)
@@ -32,7 +32,7 @@ set (PACKAGE_URL https://github.com/BYVoid/Opencc)
 set (PACKAGE_BUGREPORT https://github.com/BYVoid/Opencc/issues)
 set (OPENCC_VERSION_MAJOR 1)
 set (OPENCC_VERSION_MINOR 0)
-set (OPENCC_VERSION_REVISION 5)
+set (OPENCC_VERSION_REVISION 6)
 
 if (CMAKE_BUILD_TYPE MATCHES Debug)
   set (version_suffix .Debug)
diff --git a/NEWS.md b/NEWS.md
index b3c2fc6cfc3e3a27edae5b7bf33fde46298df4b6..5bd4cbc4a65d04f1f1271565b0e84777421f8089 100644 (file)
--- a/NEWS.md
+++ b/NEWS.md
@@ -1,5 +1,14 @@
 # Change History of OpenCC
 
+## Version 1.0.6
+
+2020年4月13日
+
+* 正式支持日本語新字體轉換。
+* 升級Node.js依賴,改進兼容性。
+* 修復多處多平臺編譯和兼容性問題。
+* 修正大量轉換錯誤。
+
 ## Version 1.0.5
 
 2017年2月6日
index 855155815bbc00ea30ade2555e285b93440e6c22..8f3e6bd1adebd93b48ba809eef724d24459e8f09 100644 (file)
--- a/README.md
+++ b/README.md
@@ -8,7 +8,11 @@
 
 Open Chinese Convert (OpenCC, 開放中文轉換) is an opensource project for conversion between Traditional Chinese and Simplified Chinese, supporting character-level conversion, phrase-level conversion, variant conversion and regional idioms among Mainland China, Taiwan and Hong kong.
 
-中文簡繁轉換開源項目,支持詞彙級別的轉換、異體字轉換和地區習慣用詞轉換(中國大陸、臺灣、香港)。
+中文簡繁轉換開源項目,支持詞彙級別的轉換、異體字轉換和地區習慣用詞轉換(中國大陸、臺灣、香港、日本新字體)。
+
+## Discussion 討論
+
+Telegram: https://t.me/open_chinese_convert
 
 ### Features 特點
 
@@ -17,20 +21,20 @@ Open Chinese Convert (OpenCC, 開放中文轉換) is an opensource project for c
 * 嚴格審校一簡對多繁詞條,原則爲「能分則不合」。
 * 支持中國大陸、臺灣、香港異體字和地區習慣用詞轉換,如「裏」「裡」、「鼠標」「滑鼠」。
 * 詞庫和函數庫完全分離,可以自由修改、導入、擴展。
-* 支持C、C++、Python、PHP、Java、Ruby、Node.js and Android。
-* 兼容Windows、Linux、Mac平臺。
+* 支持 C、C++、Python、PHP、Java、Ruby、Node.js、Android。
+* 兼容 Windows、Linux、Mac 平臺。
 
 ### Links 相關鏈接
 
 * Introduction 詳細介紹 https://github.com/BYVoid/OpenCC/wiki/%E7%B7%A3%E7%94%B1
-* OpenCC Online (在線轉換) http://opencc.byvoid.com/
+* OpenCC Online (在線轉換) https://opencc.byvoid.com/
 * 現代漢語常用簡繁一對多字義辨析表 http://ytenx.org/byohlyuk/KienxPyan
 
 ## Installation 安裝
 
 * [Debian](http://packages.qa.debian.org/o/opencc.html)
 * [Ubuntu](https://launchpad.net/ubuntu/+source/opencc)
-* [Fedora](https://admin.fedoraproject.org/pkgdb/package/opencc/)
+* [Fedora](https://apps.fedoraproject.org/packages/opencc/)
 * [Arch Linux](https://www.archlinux.org/packages/community/x86_64/opencc/)
 * [Mac OS](https://github.com/Homebrew/homebrew-core/blob/master/Formula/opencc.rb)
 * [Node.js](https://npmjs.org/package/opencc)
@@ -45,6 +49,18 @@ https://bintray.com/byvoid/opencc/OpenCC
 
 `opencc --help`
 
+### Node.js
+
+```js
+const OpenCC = require('opencc');
+const opencc = new OpenCC('s2t.json');
+opencc.convertPromise("汉字").then(converted => {
+  console.log(converted);  // 漢字
+});
+```
+
+See `[demo.js](https://github.com/BYVoid/OpenCC/blob/master/node/demo.js)`.
+
 ### Configurations 配置文件
 
 #### 預設配置文件
@@ -59,6 +75,7 @@ https://bintray.com/byvoid/opencc/OpenCC
 * `tw2sp.json` Traditional Chinese (Taiwan Standard) to Simplified Chinese with Mainland Chinese idiom 繁體(臺灣正體標準)到簡體並轉換爲中國大陸常用詞彙
 * `t2tw.json` Traditional Chinese (OpenCC Standard) to Taiwan Standard 繁體(OpenCC 標準)到臺灣正體
 * `t2hk.json` Traditional Chinese (OpenCC Standard) to Hong Kong Standard 繁體(OpenCC 標準)到香港繁體(香港小學學習字詞表標準)
+* `t2jp.json` Traditional Chinese Characters (Kyūjitai) to New Japanese Kanji (Shinjitai) 繁體(OpenCC 標準,舊字體)到日文新字體
 
 ## Development Documentation 開發文檔
 
@@ -70,39 +87,39 @@ https://bintray.com/byvoid/opencc/OpenCC
 
 Linux (gcc 4.6 is required):
 
-```
+```bash
 make
 sudo make install
 ```
 
 Mac OS X (clang 3.2 is required):
 
-```
+```bash
 make PREFIX=/usr/local
 sudo make PREFIX=/usr/local install
 ```
 
 Windows MSYS:
 
-```
+```bash
 cmake -H. -Bbuild -G "MSYS Makefiles" -DCMAKE_INSTALL_PREFIX="path/to/install"
 cmake --build build --config Release --target install
 ```
 
 Windows Visual Studio (2013 or higher required):
 
-```
+```bash
 cmake -H. -Bbuild -G"Visual Studio 12" -DCMAKE_INSTALL_PREFIX="path/to/install"
 cmake --build build --config Release --target install
 ```
 
-### iOS
+### iOS (Unofficial)
 
 See https://github.com/gelosie/OpenCC/tree/master/iOS
 
 Or [SwiftyOpenCC](https://github.com/XQS6LB3A/SwiftyOpenCC)
 
-### Android
+### Android (Unofficial)
 
 See [android-opencc](https://github.com/qichuan/android-opencc)
 
@@ -147,6 +164,7 @@ https://github.com/BYVoid/OpenCC/blob/master/NEWS.md
 * [Paul Meng](http://home.mno2.org/)
 * [Lawrence Lau](https://github.com/ktslwy)
 * [瑾昀](https://github.com/kunki)
+* [內木一郎](https://github.com/SyaoranHinata)
 * [Marguerite Su](https://www.marguerite.su/)
 * [Brian White](http://mscdex.net)
 * [Qijiang Fan](https://fqj.me/)
@@ -173,5 +191,7 @@ https://github.com/BYVoid/OpenCC/blob/master/NEWS.md
 * [Cychih](https://github.com/pi314)
 * [kyleskimo](https://github.com/kyleskimo)
 * [Ryuan Choi](https://github.com/bunhere)
+* [Tony Able](https://github.com/TonyAble)
+* [Xiao Liang](https://github.com/yxliang01)
 
 Please update this list you have contributed OpenCC.
index 599ad6ea9605dd586114cf478a009f21fcbfc23b..f3419effe117d91d8a50c4a37a09e36b18c59a2b 100644 (file)
@@ -6,9 +6,9 @@ build: off
 environment:
   matrix:
     - nodejs_version: stable
+    - nodejs_version: 13
     - nodejs_version: 10
     - nodejs_version: 8
-    - nodejs_version: 6
 
 platform:
   - x64
index 151677536ca1b0ea80736fb5a00a9d916506f308..3d39e31115162673ac970f702964b79d32116973 100644 (file)
@@ -1,6 +1,8 @@
+find_package(PythonInterp REQUIRED)
+
 set(OPENCC_DICT_BIN opencc_dict)
-set(DICT_MERGE_BIN python ${CMAKE_CURRENT_SOURCE_DIR}/scripts/merge.py)
-set(DICT_REVERSE_BIN python ${CMAKE_CURRENT_SOURCE_DIR}/scripts/reverse.py)
+set(DICT_MERGE_BIN "${PYTHON_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/scripts/merge.py")
+set(DICT_REVERSE_BIN "${PYTHON_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/scripts/reverse.py")
 set(DICT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/dictionary)
 set(DICT_GENERATED_DIR ${CMAKE_CURRENT_BINARY_DIR})
 
@@ -12,10 +14,12 @@ set(
   TSPhrases
   TWVariants
   TWVariantsRevPhrases
-  JPVariants
   HKVariants
   HKVariantsPhrases
   HKVariantsRevPhrases
+  JPVariants
+  JPShinjitaiCharacters
+  JPShinjitaiPhrases
 )
 
 set(
@@ -24,6 +28,7 @@ set(
   TWPhrasesRev
   TWVariantsRev
   HKVariantsRev
+  JPVariantsRev
 )
 
 set(DICTS ${DICTS_RAW} ${DICTS_GENERATED})
@@ -85,6 +90,15 @@ set(
   ${DICT_REVERSE_BIN} ${DICT_HKVariantsRev_GENERATING_INPUT} HKVariantsRev.txt
 )
 
+set(
+  DICT_JPVariantsRev_GENERATING_INPUT
+  ${DICT_DIR}/JPVariants.txt
+)
+set(
+  DICT_JPVariantsRev_GENERATING_COMMAND
+  ${DICT_REVERSE_BIN} ${DICT_JPVariantsRev_GENERATING_INPUT} JPVariantsRev.txt
+)
+
 foreach(DICT ${DICTS_GENERATED})
   add_custom_command(
     OUTPUT
@@ -147,6 +161,8 @@ set(CONFIG_FILES
   config/s2hk.json
   config/hk2s.json
   config/t2hk.json
+  config/t2jp.json
+  config/jp2t.json
 )
 
 install(
diff --git a/data/config/jp2t.json b/data/config/jp2t.json
new file mode 100644 (file)
index 0000000..f6fd0e1
--- /dev/null
@@ -0,0 +1,25 @@
+{
+  "name": "New Japanese Kanji (Shinjitai) to Traditional Chinese Characters (Kyūjitai)",
+  "segmentation": {
+    "type": "mmseg",
+    "dict": {
+      "type": "ocd",
+      "file": "JPShinjitaiPhrases.ocd"
+    }
+  },
+  "conversion_chain": [{
+    "dict": {
+      "type": "group",
+      "dicts": [{
+        "type": "ocd",
+        "file": "JPShinjitaiPhrases.ocd"
+      }, {
+        "type": "ocd",
+        "file": "JPShinjitaiCharacters.ocd"
+      }, {
+        "type": "ocd",
+        "file": "JPVariantsRev.ocd"
+      }]
+    }
+  }]
+}
index d657861f80564acb056385f706a87d0cb9ae9c67..4796c37ce391b39ceee597038fe50ec536d389ff 100644 (file)
@@ -4,13 +4,19 @@
     "type": "mmseg",
     "dict": {
       "type": "ocd",
-      "file": "HKVariants.ocd"
+      "file": "HKVariantsPhrases.ocd"
     }
   },
   "conversion_chain": [{
     "dict": {
-      "type": "ocd",
-      "file": "HKVariants.ocd"
+      "type": "group",
+      "dicts": [{
+        "type": "ocd",
+        "file": "HKVariantsPhrases.ocd"
+      }, {
+        "type": "ocd",
+        "file": "HKVariants.ocd"
+      }]
     }
   }]
 }
diff --git a/data/config/t2jp.json b/data/config/t2jp.json
new file mode 100644 (file)
index 0000000..8dc7282
--- /dev/null
@@ -0,0 +1,16 @@
+{
+  "name": "Traditional Chinese Characters (Kyūjitai) to New Japanese Kanji (Shinjitai)",
+  "segmentation": {
+    "type": "mmseg",
+    "dict": {
+      "type": "ocd",
+      "file": "JPVariants.ocd"
+    }
+  },
+  "conversion_chain": [{
+    "dict": {
+      "type": "ocd",
+      "file": "JPVariants.ocd"
+    }
+  }]
+}
index 86078fe4df59c13c79b8015c0c138d9074985f58..1437f184c39973eb0b89e54186c2e091f6b06b5f 100644 (file)
@@ -11,6 +11,9 @@
     "dict": {
       "type": "group",
       "dicts": [{
+        "type": "ocd",
+        "file": "TWPhrasesRev.ocd"
+      }, {
         "type": "ocd",
         "file": "TWVariantsRevPhrases.ocd"
       }, {
         "file": "TWVariantsRev.ocd"
       }] 
     }
-  }, {
-    "dict": {
-      "type": "ocd",
-      "file": "TWPhrasesRev.ocd"
-    }
   }, {
     "dict": {
       "type": "group",
index 2660bca59fef4f688fe5006a124736c1eac9e793..f61e8d5bd29f74a1c51622d5cf8d7fd4b809235b 100644 (file)
@@ -4,7 +4,9 @@
 冗    宂
 勳    勛
 叄    叁
+告    吿
 啓    啟
+喫    吃
 嘆    歎
 囪    囱
 妝    粧
@@ -27,7 +29,7 @@
 榲    榅
 檯    枱
 氳    氲
-涌    湧
+涌    湧 涌
 涗    涚
 溫    温
 溼    濕
diff --git a/data/dictionary/JPShinjitaiCharacters.txt b/data/dictionary/JPShinjitaiCharacters.txt
new file mode 100644 (file)
index 0000000..4dd885f
--- /dev/null
@@ -0,0 +1,6 @@
+両    兩 輛
+弁    辨 辯 瓣 辦 弁
+御    御 禦
+欠    缺 欠
+糸    絲 糸
+芸    藝 芸
diff --git a/data/dictionary/JPShinjitaiPhrases.txt b/data/dictionary/JPShinjitaiPhrases.txt
new file mode 100644 (file)
index 0000000..3a85c88
--- /dev/null
@@ -0,0 +1,176 @@
+一獲千金   一攫千金
+丁寧 叮嚀
+丁重 鄭重
+三差路      三叉路
+世論 輿論
+亜鈴 啞鈴
+交差 交叉
+供宴 饗宴
+俊馬 駿馬
+保塁 堡壘
+個条書      箇条書
+偏平 扁平
+停泊 碇泊
+優俊 優駿
+先兵 尖兵
+先鋭 尖鋭
+共役 共軛
+冗舌 饒舌
+凶器 兇器
+削岩 鑿岩
+包丁 庖丁
+包帯 繃帯
+区画 區劃
+厳然 儼然
+友宜 友誼
+反乱 叛乱
+収集 蒐集
+叙情 抒情
+台頭 擡頭
+合弁 合辦
+喜遊曲      嬉遊曲
+嘆願 歎願
+回転 廻転
+回遊 回游
+奉持 捧持
+委縮 萎縮
+展転 輾轉
+希少 稀少
+幻惑 眩惑
+広範 廣汎
+広野 曠野
+廃虚 廢墟
+建坪率      建蔽率
+弁当 辨當
+弁膜 瓣膜
+弁護 辯護
+弁髪 辮髮
+弦歌 絃歌
+恩義 恩誼
+意向 意嚮
+慰謝料      慰藉料
+憶断 臆断
+憶病 臆病
+戦没 戰歿
+扇情 煽情
+手帳 手帖
+技量 伎倆
+抜粋 抜萃
+披歴 披瀝
+抵触 牴触
+抽選 抽籤
+拘引 勾引
+拠出 醵出
+拠金 醵金
+掘削 掘鑿
+控除 扣除
+援護 掩護
+放棄 抛棄
+散水 撒水
+敬謙 敬虔
+敷延 敷衍
+断固 断乎
+族生 簇生
+昇叙 陞敘
+暖房 煖房
+暗唱 暗誦
+暗夜 闇夜
+暴露 曝露
+枯渇 涸渇
+格好 恰好
+格幅 恰幅
+棄損 毀損
+模索 摸索
+橋頭保      橋頭堡
+欠缺 欠缺
+死体 屍體
+殿部 臀部
+母指 拇指
+気迫 気魄
+決別 訣別
+決壊 決潰
+沈殿 沈澱
+油送船      油槽船
+波乱 波瀾
+注釈 註釋
+洗浄 洗滌 洗浄
+活発 活潑
+浸透 滲透
+浸食 浸蝕
+消却 銷卻
+混然 渾然
+湾曲 彎曲
+溶接 熔接
+漁労 漁撈
+漂然 飄然
+激高 激昂
+火炎 火焰
+焦燥 焦躁
+班点 斑点
+留飲 溜飲
+略奪 掠奪
+疎通 疏通
+発酵 醱酵
+白亜 白堊
+相克 相剋
+知恵 智慧
+破棄 破毀
+確固 確乎
+禁固 禁錮
+符丁 符牒
+粉装 扮装
+紫班 紫斑
+終息 終熄
+総合 綜合
+編集 編輯
+義援 義捐
+耕運機      耕耘機
+肝心 肝腎
+肩甲骨      肩胛骨
+背徳 悖德
+脈拍 脈搏
+膨張 膨脹
+芳純 芳醇
+英知 叡智
+蒸留 蒸溜
+薫蒸 燻蒸
+薫製 燻製
+衣装 衣裳
+衰退 衰退 衰頽
+裕然 悠然
+補佐 輔佐
+訓戒 訓誡
+試練 試煉
+詭弁 詭辯
+講和 媾和
+象眼 象嵌
+貫録 貫禄
+買弁 買辦
+賛辞 讚辭
+踏襲 蹈襲
+車両 車輛
+転倒 顛倒
+輪郭 輪廓
+退色 褪色
+途絶 杜絶
+連係 連繫
+連合 聯合
+選考 銓衡
+酢酸 醋酸
+野卑 野鄙
+鉱石 礦石
+間欠 間歇
+関数 函數
+防御 防禦
+険阻 嶮岨
+障壁 牆壁
+障害 障礙
+隠滅 湮滅
+集落 聚落
+雇用 雇傭
+風諭 諷喩
+飛語 蜚語
+香典 香奠
+骨格 骨骼
+高進 亢進
+鳥観 鳥瞰
index 5cf425786da88b4137b9086b8addf6f327ee4f2b..adf08ff1390fed27f8e04496d96490eee209f808 100644 (file)
@@ -4,14 +4,15 @@
 亞    亜
 佛    仏
 來    来
-倂    併
 假    仮
 傳    伝
 僞    偽
 價    価
 儉    倹
 兒    児
+內    内
 兩    両
+剎    刹
 剩    剰
 劍    剣
 劑    剤
 勳    勲
 勵    励
 勸    勧
+勻    匀
 區    区
 卷    巻
\8d½    å\8d³
\8d»    å\8d´
 參    参
+吳    呉
+咒    呪
 啞    唖
 單    単
+噓    嘘
 嚙    噛
 嚴    厳
 囑    嘱
@@ -45,6 +50,7 @@
 壽    寿
 奧    奥
 奬    奨
+妝    粧
 孃    嬢
 學    学
 寢    寝
 專    専
 對    対
 屆    届
-屛    屏
 屬    属
+峯    峰
 峽    峡
 嶽    岳
 巖    巌
 巢    巣
 帶    帯
¹·    å¹¶
»\81    å\8e 
 廢    廃
 廣    広
 廳    庁
 彈    弾
 彌    弥
 彎    弯
+彥    彦
 徑    径
 從    従
 徵    徴
 德    徳
 恆    恒
+悅    悦
 惠    恵
 惡    悪
 惱    悩
-愼    慎
 慘    惨
 應    応
 懷    懐
 戀    恋
 戰    戦
 戲    戯
+戶    戸
 戾    戻
 拂    払
 拔    抜
 搔    掻
 搖    揺
 搜    捜
+摑    掴
 擇    択
 擊    撃
 擔    担
 據    拠
-擧    挙
 擴    拡
 攝    摂
 攪    撹
 收    収
 效    効
-敍    叙
 敕    勅
+敘    叙
 數    数
 斷    断
+晉    晋
 晚    晩
 晝    昼
+暨    曁
 曆    暦
 曉    暁
 曾    曽
 會    会
 枡    桝
+查    査
 條    条
 棧    桟
+棱    稜 棱
+榆    楡
 榮    栄
-槪    概
 樂    楽
 樓    楼
 樞    枢
 歐    欧
 歡    歓
 步    歩
+歲    歳
 歷    歴
 歸    帰
 殘    残
 毆    殴
 每    毎
 氣    気
+污    汚
+沒    没
 涉    渉
 淚    涙
 淨    浄
 淺    浅
 渴    渇
+溌    潑
 溪    渓
 溫    温
+溼    湿
 滯    滞
 滿    満
 潛    潜
-æ¾\81    渋
+æ¾\80    渋
 澤    沢
-濕    湿
 濟    済
+濤    涛
 濱    浜
 濾    沪
 瀧    滝
 瀨    瀬
 灣    湾
+焔    焰
 燈    灯
 燒    焼
 營    営
 爐    炉
 爭    争
 爲    為
+牀    床
 犧    犠
 狀    状
 狹    狭
 獸    獣
 獻    献
 瓣    弁
\94\81    ç\93
\94¢    ç\94£
 畫    画
 當    当
 疊    畳
+疎    疏
+痹    痺
 瘦    痩
 癡    痴
 發    発
+皋    皐
 盜    盗
 盡    尽
-眞    真
-硏    研
 碎    砕
 祕    秘
 祿    禄
+禦    御
 禪    禅
 禮    礼
 禱    祷
+稅    税
 稱    称
 稻    稲
 穎    頴
 穗    穂
 穩    穏
 穰    穣
+竃    竈
 竊    窃
-竝    並
 粹    粋
+糉    粽
+絕    絶
 絲    糸
 經    経
 綠    緑
 縣    県
 縱    縦
 總    総
+繋    繫
 繡    繍
 繩    縄
 繪    絵
 繼    継
 續    続
+纔    才
 纖    繊
 缺    欠
 罐    缶
+羣    群
+聯    連
+聰    聡
 聲    声
 聽    聴
 肅    粛
+脣    唇
+脫    脱
 腦    脳
+腳    脚
 膽    胆
 臟    臓
 臺    台
 與    与
+舉    挙
 舊    旧
+舍    舎
+荔    茘
 莊    荘
 莖    茎
+菸    煙
+萊    莱
 萬    万
 蔣    蒋
+蔥    葱
 薰    薫
 藏    蔵
 藝    芸
 蠟    蝋
 蠶    蚕
 蠻    蛮
-衞    衛
 裝    装
-襃    褒
 覺    覚
 覽    覧
 觀    観
 觸    触
+說    説
 謠    謡
 證    証
 譯    訳
 讓    譲
 豐    豊
 豫    予
+貓    猫
 貳    弐
 賣    売
 賴    頼
 贊    賛
+贗    贋
 踐    践
 輕    軽
+輛    輌
 轉    転
 辨    弁
 辭    辞
 辯    弁
 遞    逓
+遥    遙
 遲    遅
 邊    辺
\83\9e    é\83\8e
\84\95    é\83·
\84\89    é\83·
\85¢    é\86\8b
 醉    酔
+醗    醱
 醫    医
 醬    醤
 釀    醸
 釋    釈
+鋪    舗
 錄    録
 錢    銭
 鍊    錬
-鎭    鎮
 鐵    鉄
 鑄    鋳
 鑛    鉱
+閱    閲
 關    関
 陷    陥
 隨    随
 隱    隠
 雙    双
 雜    雑
+雞    鶏
 霸    覇
 靈    霊
 靜    静
+顏    顔
 顯    顕
-飜    翻
 餘    余
 騷    騒
 驅    駆
 髓    髄
 體    体
 髮    髪
-鬪    闘
·\84    é¶\8f
+鬥    闘
±\89    é¼\88
 鷗    鴎
 鹼    鹸
 鹽    塩
 麥    麦
+麪    麺
 麴    麹
-麵    麺
 黃    黄
 黑    黒
 默    黙
 齒    歯
 齡    齢
 龍    竜
-欄    欄
-廊    廊
-朗    朗
-虜    虜
-殺    殺
-類    類
-隆    隆
-塚    塚
-猪    猪
-神    神
-祥    祥
-福    福
-諸    諸
-都    都
-侮    侮
-僧    僧
-免    免
-勉    勉
-勤    勤
-卑    卑
-喝    喝
-嘆    嘆
-器    器
-塀    塀
-墨    墨
-層    層
-悔    悔
-慨    慨
-憎    憎
-懲    懲
-敏    敏
-暑    暑
-梅    梅
-海    海
-渚    渚
-漢    漢
-煮    煮
-琢    琢
-碑    碑
-社    社
-祉    祉
-祈    祈
-祐    祐
-祖    祖
-祝    祝
-禍    禍
-禎    禎
-穀    穀
-突    突
-節    節
-練    練
-繁    繁
-署    署
-者    者
-臭    臭
-著    著
-褐    褐
-視    視
-謁    謁
-謹    謹
-賓    賓
-贈    贈
-逸    逸
-難    難
-響    響
-頻    頻
+龜    亀
index 6d9ff27d29d451f08856fb3f2cb03e9c8745336c..424cd9f8529279ea31d1f9d5b8009300ff4763e2 100644 (file)
 叹    嘆 歎
 叽    嘰
 吁    籲 吁
+吃    喫 吃
 合    合 閤
 吊    吊 弔
 同    同 衕
 圣    聖
 圹    壙
 场    場
-坂    阪
 坏    壞
 坐    坐 座
 块    塊
 杩    榪
 杯    杯 盃
 杰    傑 杰
-松    鬆 松
+松    松 鬆
 板    板 闆
 极    極 极
 构    構
 桨    槳
 桩    樁
 桪    樳
-æ¢\81    æ¨\91 æ¢\81
+æ¢\81    æ¢\81 æ¨\91
 梦    夢
 梼    檮
 梾    棶
index 141d1374961cb2f0bf44e37935eed9259e997b55..274d0939cfcc4e2ff48e037b8f41211484467804 100644 (file)
@@ -55,7 +55,7 @@
 一同 一同
 一向 一向
 一周 一週
-一周天      一
+一周天      一
 一周年      一週年
 一周遭      一周遭
 一哄 一鬨
 于途 於途
 于道泉      于道泉
 于邑 於邑
-于都县      於都縣
+于都 于都
+于都县      于都縣
 于里察      于里察
 于野 於野
 于阗 于闐
 什不闲      什不閒
 什么 什麼
 什叶派      什葉派
+什里店      什里店
 什锦炒面   什錦炒麪
 什锦面      什錦麪
 什面 什面
 会占卜      會占卜
 会发 會發
 会合 會合
-会合周期   會合
+会合周期   會合
 会合处      會合處
 会合点      會合點
 会吊 會弔
 会计系      會計系
 会议记录   會議記錄
 会逢其适   會逢其適
-会里 會
-会里县      會
+会里 會
+会里县      會
 会长团      會長團
 会面 會面
 会面处      會面處
 光合作用   光合作用
 光合细菌   光合細菌
 光向 光向
-光周期      光
+光周期      光
 光圈范围   光圈範圍
 光复 光復
 光复乡      光復鄉
 兰叶撇      蘭葉撇
 兰摧玉折   蘭摧玉折
 兰摧蕙折   蘭摧蕙折
+兰棱 蘭棱
 兰秋 蘭秋
 兰艾同烬   蘭艾同燼
 兰艾同焚   蘭艾同焚
 励志 勵志
 励志书      勵志書
 劲度系数   勁度係數
+劲松 勁松
 劲秋 勁秋
 劲舞团      勁舞團
 劲骨丰肌   勁骨豐肌
 发悲 發悲
 发悸 發悸
 发情 發情
-发情周期   發情
+发情周期   發情
 发情期      發情期
 发想 發想
 发愁 發愁
 台子孙      臺子孫
 台孙 臺孫
 台孩 臺孩
-台安 檯安
-台安县      安縣
+台安 臺安 檯安
+台安县      安縣
 台客 臺客
 台客呛辣   臺客嗆辣
 台客舞      臺客舞
 台尺 臺尺
 台山 台山
-台山市      山市
+台山市      山市
 台峪 臺峪
 台州 台州
 台州地区   台州地區
 周年 週年
 周年庆      週年慶
 周年纪念   週年紀念
-周年视差   年視差
+周年视差   年視差
 周幼婷      周幼婷
 周幽王      周幽王
 周庄 周莊
 周晬 周晬
 周朝 周朝
 周期 週期
-周期函数   期函數
-周期彗星   期彗星
+周期函数   期函數
+周期彗星   期彗星
 周期律      週期律
 周期性      週期性
 周期数      週期數
 周美青      周美青
 周考 週考
 周而不比   周而不比
-周而复始   而復始
+周而复始   而復始
 周至 周至
 周至县      周至縣
 周董 周董
 周边 周邊
 周边设备   周邊設備
 周迅 周迅
-周近 
+周近 
 周遍 周遍
 周道 周道
 周遭 周遭
-周遭事物   遭事物
+周遭事物   遭事物
 周遮 周遮
 周邦彦      周邦彥
 周郎 周郎
 咀嚼出      咀嚼出
 和丰 和豐
 和了 和了
+和什托洛盖        和什托洛蓋
 和光同尘   和光同塵
 和克制      和剋制
 和合 和合
 哲学系      哲學系
 哲学范畴   哲學範疇
 哲布尊丹巴        哲布尊丹巴
+哲里木      哲里木
 哺喂 哺餵
 哼个 哼個
 哼出 哼出
 图资系统   圖資系統
 图里 圖裏
 图里亚夫   圖里亞夫
+图里河      圖里河
 图鉴 圖鑑
 图面 圖面
 囿于 囿於
 坛场 壇場
 坛坛罐罐   罈罈罐罐
 坛坫 壇坫
-坛坫周旋   壇坫
+坛坫周旋   壇坫
 坛城 壇城
 坛女儿红   罈女兒紅
 坛好酒      罈好酒
 大后年      大後年
 大后方      大後方
 大周后      大周后
-大周折      大週摺
+大周折      大周折
 大咸 大咸
 大哗 大譁
 大回 大回
 太子舍人   太子舍人
 太干 太乾
 太平御览   太平御覽
-太平洋周边        太平洋週邊
-太平洋周邊        太平洋周邊
+太平洋周边        太平洋周邊
 太平洋联合铁路  太平洋聯合鐵路
 太扯了      太扯了
 太松 太鬆
 太谷 太谷
 太谷县      太谷縣
 太谷灯      太谷燈
-太阳升      太陽å\8d\87
+太阳升      太陽æ\98\87
 太阳历      太陽曆
 太阳微系统公司  太陽微系統公司
 太阳照在桑干河上       太陽照在桑乾河上
 太阳系      太陽系
 太阳能板   太陽能板
 太阳谷      太陽谷
-太阳黑子周        太陽黑子
+太阳黑子周        太陽黑子
 太阴历      太陰曆
 太麻里      太麻里
 太麻里乡   太麻里鄉
 宜丰县      宜豐縣
 宜于 宜於
 宜云 宜云
-宝丰 寶丰 寶
+宝丰 寶豐
 宝丰县      寶豐縣
 宝卷 寶卷
 宝历 寶曆
 察合台汗国        察合臺汗國
 察布查尔   察布查爾
 察布查尔县        察布查爾縣
+察干 察干
 察核 察覈
 察觉出      察覺出
 寡占 寡佔
 小叶 小葉
 小同乡      小同鄉
 小后生      小後生
-小周天      小
+小周天      小
 小回 小回
 小场面      小場面
 小型柜橱   小型櫃櫥
 布列兹涅夫        布列茲涅夫
 布列兹涅夫主义  布列茲涅夫主義
 布列塔尼   布列塔尼
+布列开      布列開
 布利吉      布利吉
 布利斯班   布利斯班
 布利斯班市        布利斯班市
 布吉河      布吉河
 布吉纳法索        布吉納法索
 布告 佈告
-布告栏      告欄
-布告牌      告牌
+布告栏      告欄
+布告牌      告牌
 布哈拉      布哈拉
 布哈林      布哈林
 布哈林模式        布哈林模式
 干坞 乾塢
 干城 干城
 干堂婶      乾堂嬸
+干塘 乾塘
 干大事      幹大事
 干头 幹頭
 干女 乾女
 干渴 乾渴
 干湿 乾溼
 干湿发      乾溼髮
+干溪 乾溪
 干漆 乾漆
 干灯盏      乾燈盞
 干点 乾點 幹點
 戚党 戚黨
 戚凯罗      戚凱羅
 戚友 戚友
\88\9aå¢\85å °      æ\85¼墅堰
\88\9aå¢\85å °å\8cº   æ\85¼墅堰區
\88\9aå¢\85å °      æ\88\9a墅堰
\88\9aå¢\85å °å\8cº   æ\88\9a墅堰區
 戚夫人      戚夫人
 戚家军      戚家軍
 戚容 戚容
 才艺秀      才藝秀
 才蔽识浅   才蔽識淺
 才藻 才藻
-才行 才行
+才行 纔行 才行
 才要 纔要
 才讲 纔講
 才识 才識
 托过 託過
 托运 託運
 托运行李   托運行李
-托里 托
-托里县      托
-托里拆利   托拆利
+托里 托
+托里县      托
+托里拆利   托拆利
 托鉢 托鉢
 托钵人      托鉢人
 托钵修会   托鉢修會
 抓出 抓出
 抓出去      抓出去
 抓出来      抓出來
-抓周 抓
+抓周 抓
 抓回 抓回
 抓回去      抓回去
 抓回来      抓回來
 招回去      招回去
 招回来      招回來
 招复 招復
-招待不周   招待不
+招待不周   招待不
 招术 招術
 招致 招致
 拜冬 拜冬
 救恩计划   救恩計劃
 救生艇甲板        救生艇甲板
 救药 救藥
+敖力布告   敖力布告
 敖游 敖遊
 敖荡 敖盪
 教个 教個
 斗武 鬥武
 斗殴 鬥毆
 斗气 鬥氣
+斗沟子      斗溝子
 斗法 鬥法
 斗渠 斗渠
 斗灯 斗燈
 新婚不如远别     新婚不如遠別
 新嫁娘      新嫁娘
 新局面      新局面
\96°å¹² æ\96°å¹²
\96°å¹²å\8e¿      æ\96°å¹²
\96°å¹² æ\96°å¹¹
\96°å¹²å\8e¿      æ\96°å¹¹
 新干线      新幹線
 新庄 新莊
 新庄市      新莊市
 昆山 崑山
 昆布 昆布
 昆曲 崑曲
+昆玉 崑玉
 昆腔 崑腔
 昆苏 崑蘇
 昆虫 昆蟲
 曷极 曷極
 曹余章      曹餘章
 曹参 曹參
+曹子里      曹子里
 曹郁芬      曹郁芬
 曼尼托巴省        曼尼托巴省
 曼苏尔      曼蘇爾
 松喉 鬆喉
 松土 鬆土
 松土机      鬆土機
+松坎 松坎
+松坝 松壩
 松垮 鬆垮
 松大辅      松大輔
 松子 松子
 松柏长青茶        松柏長青茶
 松柔 鬆柔
 松树 松樹
+松桃 松桃
 松桃县      松桃縣
 松桃苗族自治县  松桃苗族自治縣
 松毛 松毛
 松江区      松江區
 松江省      松江省
 松江路      松江路
+松河 松河
 松油 松油
 松油管      鬆油管
 松油门      鬆油門
 松涛 松濤
 松溪 松溪
 松溪县      松溪縣
-松滋 
-松滋市      滋市
+松滋 
+松滋市      滋市
 松漠 松漠
 松潘 松潘
 松潘县      松潘縣
 果子药      果子藥
 果干 果乾
 果杯 果杯
+果松 果松
 果核 果核
 果穗 果穗
 枝不得大于干     枝不得大於榦
 查克瑞      查克瑞
 查准率      查準率
 查出 查出
+查干 查干
+查干湖      查干湖
 查扣 查扣
 查核 查覈
 查获 查獲
 査回 查回
 査回去      查回去
 査回来      查回來
-査找周期   查找
+査找周期   查找
 査报表      查報表
 査无实据   查無實據
 査获 查獲
 欧胡岛      歐胡島
 欧萨苏纳   歐薩蘇納
 欧足联杯   歐足聯杯
+欧里 歐里
 欧里庇得斯        歐里庇得斯
 欧里桑      歐里桑
 欧阳修      歐陽修
 温度范围   溫度範圍
 温度表      溫度表
 温得和克   溫得和克
+温根托海   溫根托海
 温祥云      溫祥雲
 港制 港製
 港制品      港製品
 瓦尔达克省        瓦爾達克省
 瓦当 瓦當
 瓦当文      瓦當文
+瓦拉干      瓦拉干
 瓦松 瓦松
 瓦特表      瓦特表
 瓦瑞泰克   瓦瑞泰克
 田家庵区   田家庵區
 田庄 田莊
 田志兴      田志興
+田梁子      田梁子
 田父之获   田父之獲
 田秋堇      田秋堇
 田种玉      田種玉
 电子云      電子雲
 电子反制   電子反制
 电子学系   電子學系
-电子布告栏        電子布告欄
 电子店面   電子店面
 电子数据交换     電子數據交換
 电子杂志   電子雜誌
 白板天子   白板天子
 白板笔      白板筆
 白果松      白果松
\99½æ´\8bæ·\80      ç\99½æ´\8bæ¾±
\99½æ´\8bæ·\80      ç\99½æ´\8bæ·\80
 白淨面皮   白淨面皮
 白烟 白煙
 白皮松      白皮松
 穆克吉      穆克吉
 穆巴拉克   穆巴拉克
 穆斯坦西里        穆斯坦西里
+穆棱 穆棱
 穆罕默德历        穆罕默德曆
 穆罕默德历史     穆罕默德歷史
 穗儿 穗兒
 苏子油      蘇子油
 苏宁 蘇寧
 苏宁电器   蘇寧電器
-苏家屯      甦家屯
-苏家屯区   甦家屯區
+苏家 蘇家
+苏家屯      蘇家屯
+苏家屯区   蘇家屯區
 苏家明      蘇家明
 苏富比      蘇富比
 苏富比公司        蘇富比公司
 范士丹      范士丹
 范姜 范姜
 范字 範字
-范家谦      范家謙
+范家 范家
 范宽 范寬
 范小姐      范小姐
 范尼斯特鲁伊     范尼斯特魯伊
 范进 范進
 范逸臣      范逸臣
 范金 範金
+范鎮 范鎮
 范阳 范陽
 范陈柏      范陳柏
 范雎 范雎
 西岳 西嶽
 西征 西征
 西文系      西文系
+西斗铺      西斗鋪
 西方极乐   西方極樂
 西方极乐世界     西方極樂世界
 西晒 西曬
 远志 遠志
 远恶 遠惡
 远房亲戚   遠房親戚
-远打周折   遠打
+远打周折   遠打
 远期外汇   遠期外匯
 远水救不了近火  遠水救不了近火
 远游 遠遊
 里昂 里昂
 里昂市      里昂市
 里昂队      里昂隊
+里木店      里木店
 里根 里根
 里欧 里歐
 里欧斯      里歐斯
 长卷 長卷
 长历 長曆
 长发 長髮
+长发屯      長發屯
+长发镇      長發鎮
 长叹 長嘆
 长吁 長吁
 长吁短叹   長吁短嘆
 长君之恶   長君之惡
-长坂坡七进七出  長阪坡七進七出
 长头布      長頭布
 长寿烟      長壽菸
 长寿面      長壽麪
 长须 長鬚
 长须鲸      長鬚鯨
 长风万里   長風萬里
-開發周期   開發
+開發周期   開發
 门前门后   門前門後
 门吊儿      門吊兒
 门帘 門簾
 阳电极      陽電極
 阳秋 陽秋
 阳虚发热   陽虛發熱
-阳谷 陽
-阳谷县      陽
+阳谷 陽
+阳谷县      陽
 阳面 陽面
 阴丹布      陰丹布
 阴云 陰雲
 高发 高發
 高台 高臺
 高台县      高臺縣
-高周波      高
+高周波      高
 高唱入云   高唱入雲
 高坛 高壇
 高处不胜寒        高處不勝寒
 黄曲霉毒素        黃麴黴毒素
 黄曲霉菌   黃麴黴菌
 黄有才      黃有才
+黄松 黃松
 黄梁 黃梁
 黄梁梦      黃梁夢
 黄梁美梦   黃樑美夢
 龙嵩叶      龍嵩葉
 龙斗虎伤   龍鬥虎傷
 龙无云而不行     龍無雲而不行
-龙游 龍
-龙游县      龍
+龙游 龍
+龙游县      龍
 龙游浅水   龍游淺水
 龙烟铁矿   龍煙鐵礦
 龙眼干      龍眼乾
 龙虎并伏   龍虎並伏
 龙虎斗      龍虎鬥
 龙虾面      龍蝦麪
-龙里 龍
-龙里县      龍
+龙里 龍
+龙里县      龍
 龙钟 龍鍾
 龙门吊      龍門吊
 龙须 龍鬚
index 47225685fd915ce56e36bd3caba01aa746020a9b..4d8ca39712b71d0a70501ffe29c84f3fd0ff65a4 100644 (file)
@@ -291,7 +291,7 @@ SQL注入攻擊     SQL隱碼攻擊
 複選按鈕   覈取按鈕
 複選框      覈取方塊
 視圖 檢視
-視頻 視訊
+視頻 影片 視訊
 解釋器      直譯器
 觸摸 觸控
 觸摸屏      觸控式螢幕
index 090a9a0bb63bfabbcce0d193a22105acc79c199c..c88527fda8fe8ff407022df34ee1a49e16409970 100644 (file)
@@ -3,13 +3,14 @@
 咖喱 咖哩
 奔馳 賓士
 奶酪 乳酪
\96¹ä¾¿éºµ      速食麵
\96¹ä¾¿éºª      æ³¡éºµ 速食麵
 涼菜 冷盤
 砹    砈
 硅    矽
 納米 奈米
+自行車      腳踏車
 詞組 片語
-蹦極 笨豬
+蹦極 高空彈
 輔音 子音
 酰    醯
 鈁    鍅
index ce6ba24e2b9e3479133695fe4c64dc56bfaa98a3..ac1b060a969c05e5a8a10e53eef7fd614bb771d0 100644 (file)
@@ -1,6 +1,7 @@
 僞    偽
 兇    凶
 啓    啟
+喫    吃
 嫺    嫻
 嬀    媯
 峯    峰
index 188f0ee055d0b753f74727f63d7cd8d3f9edbf6d..8777af345d1cda158b78d62f9218ec17a949fb8a 100644 (file)
@@ -82,6 +82,7 @@
 熏    熏 燻 「燻」特指一種烹飪方法,其餘用「熏」。       熏陶 利慾熏心 臭氣熏天 燻肉
 赞    贊 讚 與「表揚」有關意義用「讚」,其餘用「贊」。 贊助 贊同 讚美
 尝    嘗 嚐 與「喫」、「品嚐」有關意義用「嚐」,其餘用「嘗」。     嘗試 品嚐
+吃    喫 吃 解作「食」時用「喫」,解作「言蹇難也」時用「吃」。     喫飯 喫水 口吃
 烟    煙 菸 「煙」用於一般煙霧,與「菸草」有關時用「菸」。   煙霧 菸草 香菸
 周    周 週 賙     與「週期」有關用「週」,濟助他人用「賙」,其餘意義爲「周」。      周朝 眾所周知 週歲 週而復始 賙濟
 柜    櫃 柜 表示收藏東西的傢具時作「櫃」,表示一種落葉喬木用「柜」。    書櫃 柜柳
index 64e2271444b719a0d94f4d39125af456dd021e44..e148e35ee23135aaa13cd7c50c556f5f3647d1a5 100644 (file)
@@ -15,6 +15,8 @@
         "../data/config/s2hk.json",
         "../data/config/hk2s.json",
         "../data/config/t2hk.json",
+        "../data/config/t2jp.json",
+        "../data/config/jp2t.json",
       ]
     }]
   }]
index 0ea3452652ae3b61b040d6e5f319592cde9bdd1e..30eefa2e87265d51b4046a82dd530b4d9b0c3bcc 100644 (file)
       "inputs": ["<(input)"],
       "outputs": ["<(output_prefix)HKVariantsRev.ocd"],
       "action": ["node", "<(cmd)", "<(input)", "<@(_outputs)"]
+    }, {
+      "action_name": "JPVariantsRev.txt",
+      "variables": {
+        "input": "<(input_prefix)JPVariants.txt",
+      },
+      "inputs": ["<(input)"],
+      "outputs": ["<(output_prefix)JPVariantsRev.txt"],
+      "action": ["python", "<(dict_reverse)", "<(input)", "<@(_outputs)"]
+    }, {
+      "action_name": "JPVariantsRev",
+      "variables": {
+        "input": "<(output_prefix)JPVariantsRev.txt",
+      },
+      "inputs": ["<(input)"],
+      "outputs": ["<(output_prefix)JPVariantsRev.ocd"],
+      "action": ["node", "<(cmd)", "<(input)", "<@(_outputs)"]
+    }, {
+      "action_name": "JPShinjitaiCharacters",
+      "variables": {
+        "input": "<(input_prefix)JPShinjitaiCharacters.txt",
+      },
+      "inputs": ["<(input)"],
+      "outputs": ["<(output_prefix)JPShinjitaiCharacters.ocd"],
+      "action": ["node", "<(cmd)", "<(input)", "<@(_outputs)"]
+    }, {
+      "action_name": "JPShinjitaiPhrases",
+      "variables": {
+        "input": "<(input_prefix)JPShinjitaiPhrases.txt",
+      },
+      "inputs": ["<(input)"],
+      "outputs": ["<(output_prefix)JPShinjitaiPhrases.ocd"],
+      "action": ["node", "<(cmd)", "<(input)", "<@(_outputs)"]
     }],
     "dependencies": [
       "opencc"
index 5becc15949e9637e92627d5911a0f3bba5eb604e..531c0a214ac0d03303e48facc1030710b7c53c78 100644 (file)
@@ -1,6 +1,6 @@
 {
   "variables": {
-    "opencc_version": "1.0.5"
+    "opencc_version": "1.0.6"
   },
   "target_defaults": {
     "defines": [
index b948e55e6ab5e3fe46ec77d0ea0b34ebb3ee3f53..b0ba28971e552c2d0e30c8fe71d323c80504baac 100644 (file)
@@ -119,7 +119,8 @@ class OpenccBinding : public Nan::ObjectWrap {
       err,
       converted
     };
-    conv_data->callback->Call(argc, argv);
+    Nan::AsyncResource resource("opencc:convert-async-cb");
+    conv_data->callback->Call(argc, argv, &resource);
     delete conv_data;
     delete req;
   }
index 67be63f6448be3228744793b04c073b5cef5f12b..ecc82d0dfd5432ae6fd1a6658a8678612fd4eec4 100644 (file)
  * Node.js language binding
  */
 
-var path = require('path');
-var bindingPath = require('node-pre-gyp').find(require.resolve('../package.json'));
-var binding = require(bindingPath);
+const path = require('path');
+const bindingPath = require('node-pre-gyp').find(require.resolve('../package.json'));
+const binding = require(bindingPath);
 
-var assetsPath = path.dirname(bindingPath);
-var getConfigPath = function (config) {
-  var configPath = config;
+const assetsPath = path.dirname(bindingPath);
+const getConfigPath = function (config) {
+  let configPath = config;
   if (config[0] !== '/' && config[1] !== ':') {
     // Resolve relative path
     configPath = path.join(assetsPath, config);
@@ -47,7 +47,7 @@ var getConfigPath = function (config) {
  * @constructor
  * @ingroup node_api
  */
-var OpenCC = module.exports = function (config) {
+const OpenCC = module.exports = function (config) {
   if (!config) {
     config = 's2t.json';
   }
@@ -76,10 +76,10 @@ OpenCC.version = binding.Opencc.version();
  * @return Converted text.
  * @ingroup node_api
  */
-OpenCC.generateDict = function(inputFileName, outputFileName,
-    formatFrom, formatTo) {
+OpenCC.generateDict = function (inputFileName, outputFileName,
+  formatFrom, formatTo) {
   return binding.Opencc.generateDict(inputFileName, outputFileName,
-    formatFrom, formatTo); 
+    formatFrom, formatTo);
 }
 
 /**
@@ -119,8 +119,8 @@ OpenCC.prototype.convertSync = function (input) {
  */
 OpenCC.prototype.convertPromise = function (input) {
   const self = this;
-  return new Promise(function(resolve, reject) {
-    self.handler.convert(input.toString(), function(err, text) {
+  return new Promise(function (resolve, reject) {
+    self.handler.convert(input.toString(), function (err, text) {
       if (err) reject(err);
       else resolve(text);
     });
index 702048691ead8ab3606ba301e18a805dc8249cdc..17df4e68af5856c449e1aa14e366b767fff55b28 100644 (file)
@@ -1,8 +1,10 @@
-var assert = require('assert');
-var fs = require('fs');
-var OpenCC = require('./opencc');
+const assert = require('assert');
+const fs = require('fs');
+const util = require('util');
 
-var configs = [
+const OpenCC = require('./opencc');
+
+const configs = [
   's2t',
   's2tw',
   's2twp',
@@ -11,25 +13,27 @@ var configs = [
   'tw2sp',
   's2hk',
   'hk2s',
+  't2jp',
+  'jp2t',
 ];
 
-var testSync = function (config, done) {
-  var inputName = 'test/testcases/' + config + '.in';
-  var outputName = 'test/testcases/' + config + '.ans';
-  var configName = config + '.json';
-  var opencc = new OpenCC(configName);
-  var text = fs.readFileSync(inputName, 'utf-8');
-  var converted = opencc.convertSync(text);
-  var answer = fs.readFileSync(outputName, 'utf-8');
+const testSync = function (config, done) {
+  const inputName = 'test/testcases/' + config + '.in';
+  const outputName = 'test/testcases/' + config + '.ans';
+  const configName = config + '.json';
+  const opencc = new OpenCC(configName);
+  const text = fs.readFileSync(inputName, 'utf-8');
+  const converted = opencc.convertSync(text);
+  const answer = fs.readFileSync(outputName, 'utf-8');
   assert.equal(converted, answer);
   done();
 };
 
-var testAsync = function (config, done) {
-  var inputName = 'test/testcases/' + config + '.in';
-  var outputName = 'test/testcases/' + config + '.ans';
-  var configName = config + '.json';
-  var opencc = new OpenCC(configName);
+const testAsync = function (config, done) {
+  const inputName = 'test/testcases/' + config + '.in';
+  const outputName = 'test/testcases/' + config + '.ans';
+  const configName = config + '.json';
+  const opencc = new OpenCC(configName);
   fs.readFile(inputName, 'utf-8', function (err, text) {
     if (err) return done(err);
     opencc.convert(text, function (err, converted) {
@@ -43,6 +47,19 @@ var testAsync = function (config, done) {
   });
 };
 
+async function testAsyncPromise(config) {
+  const inputName = 'test/testcases/' + config + '.in';
+  const outputName = 'test/testcases/' + config + '.ans';
+  const configName = config + '.json';
+  const opencc = new OpenCC(configName);
+
+  const text = await util.promisify(fs.readFile)(inputName, 'utf-8');
+  const converted = await opencc.convertPromise(text);
+  const answer = await util.promisify(fs.readFile)(outputName, 'utf-8');
+
+  assert.equal(converted, answer);
+};
+
 describe('Sync API', function () {
   configs.forEach(function (config) {
     it(config, function (done) {
@@ -58,3 +75,11 @@ describe('Async API', function () {
     });
   });
 });
+
+describe('Async Promise API', function () {
+  configs.forEach(function (config) {
+    it(config, function (done) {
+      testAsyncPromise(config).then(done);
+    });
+  });
+});
diff --git a/package-lock.json b/package-lock.json
new file mode 100644 (file)
index 0000000..307bd5b
--- /dev/null
@@ -0,0 +1,1607 @@
+{
+  "name": "opencc",
+  "version": "1.0.6",
+  "lockfileVersion": 1,
+  "requires": true,
+  "dependencies": {
+    "@octokit/rest": {
+      "version": "15.18.3",
+      "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-15.18.3.tgz",
+      "integrity": "sha512-oHABAvvC83tPIuvUfWRaw9eLThFrCxBgywl+KvEwfTFjoCrMOfEaMh0r39+Ub/EEbV345GJiMzN+zPZ4kqOvbA==",
+      "dev": true,
+      "requires": {
+        "before-after-hook": "^1.1.0",
+        "btoa-lite": "^1.0.0",
+        "debug": "^3.1.0",
+        "http-proxy-agent": "^2.1.0",
+        "https-proxy-agent": "^2.2.0",
+        "lodash": "^4.17.4",
+        "node-fetch": "^2.1.1",
+        "universal-user-agent": "^2.0.0",
+        "url-template": "^2.0.8"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.2.6",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
+          "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "ms": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+          "dev": true
+        }
+      }
+    },
+    "abbrev": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+      "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
+    },
+    "agent-base": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz",
+      "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==",
+      "dev": true,
+      "requires": {
+        "es6-promisify": "^5.0.0"
+      }
+    },
+    "ansi-colors": {
+      "version": "3.2.3",
+      "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz",
+      "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==",
+      "dev": true
+    },
+    "ansi-regex": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+      "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
+    },
+    "ansi-styles": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+      "dev": true,
+      "requires": {
+        "color-convert": "^1.9.0"
+      }
+    },
+    "anymatch": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
+      "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
+      "dev": true,
+      "requires": {
+        "normalize-path": "^3.0.0",
+        "picomatch": "^2.0.4"
+      }
+    },
+    "aproba": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
+      "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="
+    },
+    "are-we-there-yet": {
+      "version": "1.1.5",
+      "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
+      "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
+      "requires": {
+        "delegates": "^1.0.0",
+        "readable-stream": "^2.0.6"
+      }
+    },
+    "argparse": {
+      "version": "1.0.10",
+      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+      "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+      "dev": true,
+      "requires": {
+        "sprintf-js": "~1.0.2"
+      }
+    },
+    "balanced-match": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+      "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
+    },
+    "before-after-hook": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-1.4.0.tgz",
+      "integrity": "sha512-l5r9ir56nda3qu14nAXIlyq1MmUSs0meCIaFAh8HwkFwP1F8eToOuS3ah2VAHHcY04jaYD7FpJC5JTXHYRbkzg==",
+      "dev": true
+    },
+    "binary-extensions": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz",
+      "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==",
+      "dev": true
+    },
+    "brace-expansion": {
+      "version": "1.1.11",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+      "requires": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "braces": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+      "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+      "dev": true,
+      "requires": {
+        "fill-range": "^7.0.1"
+      }
+    },
+    "browser-stdout": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz",
+      "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
+      "dev": true
+    },
+    "btoa-lite": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz",
+      "integrity": "sha1-M3dm2hWAEhD92VbCLpxokaudAzc=",
+      "dev": true
+    },
+    "camelcase": {
+      "version": "5.3.1",
+      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+      "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+      "dev": true
+    },
+    "chalk": {
+      "version": "2.4.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+      "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+      "dev": true,
+      "requires": {
+        "ansi-styles": "^3.2.1",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^5.3.0"
+      },
+      "dependencies": {
+        "supports-color": {
+          "version": "5.5.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+          "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+          "dev": true,
+          "requires": {
+            "has-flag": "^3.0.0"
+          }
+        }
+      }
+    },
+    "chokidar": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz",
+      "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==",
+      "dev": true,
+      "requires": {
+        "anymatch": "~3.1.1",
+        "braces": "~3.0.2",
+        "fsevents": "~2.1.1",
+        "glob-parent": "~5.1.0",
+        "is-binary-path": "~2.1.0",
+        "is-glob": "~4.0.1",
+        "normalize-path": "~3.0.0",
+        "readdirp": "~3.2.0"
+      }
+    },
+    "chownr": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
+      "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="
+    },
+    "cliui": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+      "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+      "dev": true,
+      "requires": {
+        "string-width": "^3.1.0",
+        "strip-ansi": "^5.2.0",
+        "wrap-ansi": "^5.1.0"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+          "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+          "dev": true
+        },
+        "is-fullwidth-code-point": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+          "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+          "dev": true
+        },
+        "string-width": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+          "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+          "dev": true,
+          "requires": {
+            "emoji-regex": "^7.0.1",
+            "is-fullwidth-code-point": "^2.0.0",
+            "strip-ansi": "^5.1.0"
+          }
+        },
+        "strip-ansi": {
+          "version": "5.2.0",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+          "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^4.1.0"
+          }
+        }
+      }
+    },
+    "code-point-at": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+      "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
+    },
+    "color-convert": {
+      "version": "1.9.3",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+      "dev": true,
+      "requires": {
+        "color-name": "1.1.3"
+      }
+    },
+    "color-name": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+      "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+      "dev": true
+    },
+    "concat-map": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
+    },
+    "console-control-strings": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
+      "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
+    },
+    "core-util-is": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
+    },
+    "cross-spawn": {
+      "version": "6.0.5",
+      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+      "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+      "dev": true,
+      "requires": {
+        "nice-try": "^1.0.4",
+        "path-key": "^2.0.1",
+        "semver": "^5.5.0",
+        "shebang-command": "^1.2.0",
+        "which": "^1.2.9"
+      }
+    },
+    "debug": {
+      "version": "3.2.6",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
+      "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+      "requires": {
+        "ms": "^2.1.1"
+      },
+      "dependencies": {
+        "ms": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+        }
+      }
+    },
+    "decamelize": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+      "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+      "dev": true
+    },
+    "deep-extend": {
+      "version": "0.6.0",
+      "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+      "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA=="
+    },
+    "define-properties": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
+      "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
+      "dev": true,
+      "requires": {
+        "object-keys": "^1.0.12"
+      }
+    },
+    "delegates": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
+      "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="
+    },
+    "detect-libc": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
+      "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups="
+    },
+    "diff": {
+      "version": "3.5.0",
+      "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
+      "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
+      "dev": true
+    },
+    "emoji-regex": {
+      "version": "7.0.3",
+      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+      "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+      "dev": true
+    },
+    "end-of-stream": {
+      "version": "1.4.4",
+      "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
+      "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+      "dev": true,
+      "requires": {
+        "once": "^1.4.0"
+      }
+    },
+    "es-abstract": {
+      "version": "1.17.5",
+      "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz",
+      "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==",
+      "dev": true,
+      "requires": {
+        "es-to-primitive": "^1.2.1",
+        "function-bind": "^1.1.1",
+        "has": "^1.0.3",
+        "has-symbols": "^1.0.1",
+        "is-callable": "^1.1.5",
+        "is-regex": "^1.0.5",
+        "object-inspect": "^1.7.0",
+        "object-keys": "^1.1.1",
+        "object.assign": "^4.1.0",
+        "string.prototype.trimleft": "^2.1.1",
+        "string.prototype.trimright": "^2.1.1"
+      }
+    },
+    "es-to-primitive": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+      "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+      "dev": true,
+      "requires": {
+        "is-callable": "^1.1.4",
+        "is-date-object": "^1.0.1",
+        "is-symbol": "^1.0.2"
+      }
+    },
+    "es6-promise": {
+      "version": "4.2.8",
+      "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz",
+      "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==",
+      "dev": true
+    },
+    "es6-promisify": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz",
+      "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=",
+      "dev": true,
+      "requires": {
+        "es6-promise": "^4.0.3"
+      }
+    },
+    "escape-string-regexp": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+      "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+      "dev": true
+    },
+    "esprima": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+      "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+      "dev": true
+    },
+    "execa": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
+      "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+      "dev": true,
+      "requires": {
+        "cross-spawn": "^6.0.0",
+        "get-stream": "^4.0.0",
+        "is-stream": "^1.1.0",
+        "npm-run-path": "^2.0.0",
+        "p-finally": "^1.0.0",
+        "signal-exit": "^3.0.0",
+        "strip-eof": "^1.0.0"
+      }
+    },
+    "fill-range": {
+      "version": "7.0.1",
+      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+      "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+      "dev": true,
+      "requires": {
+        "to-regex-range": "^5.0.1"
+      }
+    },
+    "find-up": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+      "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+      "dev": true,
+      "requires": {
+        "locate-path": "^3.0.0"
+      }
+    },
+    "flat": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz",
+      "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==",
+      "dev": true,
+      "requires": {
+        "is-buffer": "~2.0.3"
+      }
+    },
+    "fs-minipass": {
+      "version": "1.2.7",
+      "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz",
+      "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==",
+      "requires": {
+        "minipass": "^2.6.0"
+      }
+    },
+    "fs.realpath": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
+    },
+    "fsevents": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz",
+      "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==",
+      "dev": true,
+      "optional": true
+    },
+    "function-bind": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+      "dev": true
+    },
+    "gauge": {
+      "version": "2.7.4",
+      "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
+      "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
+      "requires": {
+        "aproba": "^1.0.3",
+        "console-control-strings": "^1.0.0",
+        "has-unicode": "^2.0.0",
+        "object-assign": "^4.1.0",
+        "signal-exit": "^3.0.0",
+        "string-width": "^1.0.1",
+        "strip-ansi": "^3.0.1",
+        "wide-align": "^1.1.0"
+      }
+    },
+    "get-caller-file": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+      "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+      "dev": true
+    },
+    "get-stream": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+      "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+      "dev": true,
+      "requires": {
+        "pump": "^3.0.0"
+      }
+    },
+    "glob": {
+      "version": "7.1.6",
+      "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
+      "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
+      "requires": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^3.0.4",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
+      }
+    },
+    "glob-parent": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz",
+      "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==",
+      "dev": true,
+      "requires": {
+        "is-glob": "^4.0.1"
+      }
+    },
+    "growl": {
+      "version": "1.10.5",
+      "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz",
+      "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==",
+      "dev": true
+    },
+    "has": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+      "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+      "dev": true,
+      "requires": {
+        "function-bind": "^1.1.1"
+      }
+    },
+    "has-flag": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+      "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+      "dev": true
+    },
+    "has-symbols": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz",
+      "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==",
+      "dev": true
+    },
+    "has-unicode": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
+      "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk="
+    },
+    "he": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
+      "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
+      "dev": true
+    },
+    "http-proxy-agent": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz",
+      "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==",
+      "dev": true,
+      "requires": {
+        "agent-base": "4",
+        "debug": "3.1.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+          "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        }
+      }
+    },
+    "https-proxy-agent": {
+      "version": "2.2.4",
+      "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz",
+      "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==",
+      "dev": true,
+      "requires": {
+        "agent-base": "^4.3.0",
+        "debug": "^3.1.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.2.6",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
+          "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "ms": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+          "dev": true
+        }
+      }
+    },
+    "iconv-lite": {
+      "version": "0.4.24",
+      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+      "requires": {
+        "safer-buffer": ">= 2.1.2 < 3"
+      }
+    },
+    "ignore-walk": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz",
+      "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==",
+      "requires": {
+        "minimatch": "^3.0.4"
+      }
+    },
+    "inflight": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+      "requires": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "inherits": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+    },
+    "ini": {
+      "version": "1.3.5",
+      "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
+      "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="
+    },
+    "is-binary-path": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+      "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+      "dev": true,
+      "requires": {
+        "binary-extensions": "^2.0.0"
+      }
+    },
+    "is-buffer": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz",
+      "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==",
+      "dev": true
+    },
+    "is-callable": {
+      "version": "1.1.5",
+      "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz",
+      "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==",
+      "dev": true
+    },
+    "is-date-object": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz",
+      "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==",
+      "dev": true
+    },
+    "is-extglob": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+      "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+      "dev": true
+    },
+    "is-fullwidth-code-point": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+      "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+      "requires": {
+        "number-is-nan": "^1.0.0"
+      }
+    },
+    "is-glob": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
+      "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
+      "dev": true,
+      "requires": {
+        "is-extglob": "^2.1.1"
+      }
+    },
+    "is-number": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+      "dev": true
+    },
+    "is-regex": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz",
+      "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==",
+      "dev": true,
+      "requires": {
+        "has": "^1.0.3"
+      }
+    },
+    "is-stream": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+      "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
+      "dev": true
+    },
+    "is-symbol": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz",
+      "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==",
+      "dev": true,
+      "requires": {
+        "has-symbols": "^1.0.1"
+      }
+    },
+    "isarray": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+    },
+    "isexe": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+      "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+      "dev": true
+    },
+    "js-yaml": {
+      "version": "3.13.1",
+      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
+      "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
+      "dev": true,
+      "requires": {
+        "argparse": "^1.0.7",
+        "esprima": "^4.0.0"
+      }
+    },
+    "locate-path": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+      "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+      "dev": true,
+      "requires": {
+        "p-locate": "^3.0.0",
+        "path-exists": "^3.0.0"
+      }
+    },
+    "lodash": {
+      "version": "4.17.15",
+      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
+      "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
+      "dev": true
+    },
+    "log-symbols": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz",
+      "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==",
+      "dev": true,
+      "requires": {
+        "chalk": "^2.4.2"
+      }
+    },
+    "macos-release": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.3.0.tgz",
+      "integrity": "sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA==",
+      "dev": true
+    },
+    "mime-db": {
+      "version": "1.43.0",
+      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz",
+      "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==",
+      "dev": true
+    },
+    "mime-types": {
+      "version": "2.1.26",
+      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz",
+      "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==",
+      "dev": true,
+      "requires": {
+        "mime-db": "1.43.0"
+      }
+    },
+    "minimatch": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+      "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+      "requires": {
+        "brace-expansion": "^1.1.7"
+      }
+    },
+    "minimist": {
+      "version": "1.2.5",
+      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
+      "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
+    },
+    "minipass": {
+      "version": "2.9.0",
+      "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
+      "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==",
+      "requires": {
+        "safe-buffer": "^5.1.2",
+        "yallist": "^3.0.0"
+      }
+    },
+    "minizlib": {
+      "version": "1.3.3",
+      "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz",
+      "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==",
+      "requires": {
+        "minipass": "^2.9.0"
+      }
+    },
+    "mkdirp": {
+      "version": "0.5.5",
+      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+      "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+      "requires": {
+        "minimist": "^1.2.5"
+      }
+    },
+    "mocha": {
+      "version": "7.1.1",
+      "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.1.1.tgz",
+      "integrity": "sha512-3qQsu3ijNS3GkWcccT5Zw0hf/rWvu1fTN9sPvEd81hlwsr30GX2GcDSSoBxo24IR8FelmrAydGC6/1J5QQP4WA==",
+      "dev": true,
+      "requires": {
+        "ansi-colors": "3.2.3",
+        "browser-stdout": "1.3.1",
+        "chokidar": "3.3.0",
+        "debug": "3.2.6",
+        "diff": "3.5.0",
+        "escape-string-regexp": "1.0.5",
+        "find-up": "3.0.0",
+        "glob": "7.1.3",
+        "growl": "1.10.5",
+        "he": "1.2.0",
+        "js-yaml": "3.13.1",
+        "log-symbols": "3.0.0",
+        "minimatch": "3.0.4",
+        "mkdirp": "0.5.3",
+        "ms": "2.1.1",
+        "node-environment-flags": "1.0.6",
+        "object.assign": "4.1.0",
+        "strip-json-comments": "2.0.1",
+        "supports-color": "6.0.0",
+        "which": "1.3.1",
+        "wide-align": "1.1.3",
+        "yargs": "13.3.2",
+        "yargs-parser": "13.1.2",
+        "yargs-unparser": "1.6.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.2.6",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
+          "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "glob": {
+          "version": "7.1.3",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
+          "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
+          "dev": true,
+          "requires": {
+            "fs.realpath": "^1.0.0",
+            "inflight": "^1.0.4",
+            "inherits": "2",
+            "minimatch": "^3.0.4",
+            "once": "^1.3.0",
+            "path-is-absolute": "^1.0.0"
+          }
+        },
+        "mkdirp": {
+          "version": "0.5.3",
+          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.3.tgz",
+          "integrity": "sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg==",
+          "dev": true,
+          "requires": {
+            "minimist": "^1.2.5"
+          }
+        },
+        "ms": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+          "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+          "dev": true
+        }
+      }
+    },
+    "ms": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+      "dev": true
+    },
+    "nan": {
+      "version": "2.14.0",
+      "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz",
+      "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg=="
+    },
+    "needle": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmjs.org/needle/-/needle-2.4.1.tgz",
+      "integrity": "sha512-x/gi6ijr4B7fwl6WYL9FwlCvRQKGlUNvnceho8wxkwXqN8jvVmmmATTmZPRRG7b/yC1eode26C2HO9jl78Du9g==",
+      "requires": {
+        "debug": "^3.2.6",
+        "iconv-lite": "^0.4.4",
+        "sax": "^1.2.4"
+      }
+    },
+    "nice-try": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+      "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
+      "dev": true
+    },
+    "node-environment-flags": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz",
+      "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==",
+      "dev": true,
+      "requires": {
+        "object.getownpropertydescriptors": "^2.0.3",
+        "semver": "^5.7.0"
+      }
+    },
+    "node-fetch": {
+      "version": "2.6.0",
+      "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
+      "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==",
+      "dev": true
+    },
+    "node-pre-gyp": {
+      "version": "0.14.0",
+      "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz",
+      "integrity": "sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA==",
+      "requires": {
+        "detect-libc": "^1.0.2",
+        "mkdirp": "^0.5.1",
+        "needle": "^2.2.1",
+        "nopt": "^4.0.1",
+        "npm-packlist": "^1.1.6",
+        "npmlog": "^4.0.2",
+        "rc": "^1.2.7",
+        "rimraf": "^2.6.1",
+        "semver": "^5.3.0",
+        "tar": "^4.4.2"
+      }
+    },
+    "node-pre-gyp-github": {
+      "version": "1.4.3",
+      "resolved": "https://registry.npmjs.org/node-pre-gyp-github/-/node-pre-gyp-github-1.4.3.tgz",
+      "integrity": "sha512-tnJ0iZgzIZnZl7VBgebPYdzOe98dxMnQeDs6+yX1WVdt6IiWu0l4EYes3IY7ZIokRbtJ4iJjqwgGIyQrdfDJSg==",
+      "dev": true,
+      "requires": {
+        "@octokit/rest": "^15.9.5",
+        "commander": "^2.17.0",
+        "mime-types": "^2.1.19"
+      },
+      "dependencies": {
+        "commander": {
+          "version": "2.20.3",
+          "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+          "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+          "dev": true
+        }
+      }
+    },
+    "nopt": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz",
+      "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==",
+      "requires": {
+        "abbrev": "1",
+        "osenv": "^0.1.4"
+      }
+    },
+    "normalize-path": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+      "dev": true
+    },
+    "npm-bundled": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz",
+      "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==",
+      "requires": {
+        "npm-normalize-package-bin": "^1.0.1"
+      }
+    },
+    "npm-normalize-package-bin": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz",
+      "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA=="
+    },
+    "npm-packlist": {
+      "version": "1.4.8",
+      "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz",
+      "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==",
+      "requires": {
+        "ignore-walk": "^3.0.1",
+        "npm-bundled": "^1.0.1",
+        "npm-normalize-package-bin": "^1.0.1"
+      }
+    },
+    "npm-run-path": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+      "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
+      "dev": true,
+      "requires": {
+        "path-key": "^2.0.0"
+      }
+    },
+    "npmlog": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
+      "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
+      "requires": {
+        "are-we-there-yet": "~1.1.2",
+        "console-control-strings": "~1.1.0",
+        "gauge": "~2.7.3",
+        "set-blocking": "~2.0.0"
+      }
+    },
+    "number-is-nan": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+      "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
+    },
+    "object-assign": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+      "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
+    },
+    "object-inspect": {
+      "version": "1.7.0",
+      "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz",
+      "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==",
+      "dev": true
+    },
+    "object-keys": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+      "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+      "dev": true
+    },
+    "object.assign": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
+      "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
+      "dev": true,
+      "requires": {
+        "define-properties": "^1.1.2",
+        "function-bind": "^1.1.1",
+        "has-symbols": "^1.0.0",
+        "object-keys": "^1.0.11"
+      }
+    },
+    "object.getownpropertydescriptors": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz",
+      "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==",
+      "dev": true,
+      "requires": {
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.17.0-next.1"
+      }
+    },
+    "once": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+      "requires": {
+        "wrappy": "1"
+      }
+    },
+    "os-homedir": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+      "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
+    },
+    "os-name": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz",
+      "integrity": "sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==",
+      "dev": true,
+      "requires": {
+        "macos-release": "^2.2.0",
+        "windows-release": "^3.1.0"
+      }
+    },
+    "os-tmpdir": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+      "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
+    },
+    "osenv": {
+      "version": "0.1.5",
+      "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
+      "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
+      "requires": {
+        "os-homedir": "^1.0.0",
+        "os-tmpdir": "^1.0.0"
+      }
+    },
+    "p-finally": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+      "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
+      "dev": true
+    },
+    "p-limit": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+      "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+      "dev": true,
+      "requires": {
+        "p-try": "^2.0.0"
+      }
+    },
+    "p-locate": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+      "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+      "dev": true,
+      "requires": {
+        "p-limit": "^2.0.0"
+      }
+    },
+    "p-try": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+      "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+      "dev": true
+    },
+    "path-exists": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+      "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+      "dev": true
+    },
+    "path-is-absolute": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
+    },
+    "path-key": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+      "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+      "dev": true
+    },
+    "picomatch": {
+      "version": "2.2.2",
+      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
+      "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
+      "dev": true
+    },
+    "process-nextick-args": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+      "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
+    },
+    "pump": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+      "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+      "dev": true,
+      "requires": {
+        "end-of-stream": "^1.1.0",
+        "once": "^1.3.1"
+      }
+    },
+    "rc": {
+      "version": "1.2.8",
+      "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+      "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+      "requires": {
+        "deep-extend": "^0.6.0",
+        "ini": "~1.3.0",
+        "minimist": "^1.2.0",
+        "strip-json-comments": "~2.0.1"
+      }
+    },
+    "readable-stream": {
+      "version": "2.3.7",
+      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+      "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+      "requires": {
+        "core-util-is": "~1.0.0",
+        "inherits": "~2.0.3",
+        "isarray": "~1.0.0",
+        "process-nextick-args": "~2.0.0",
+        "safe-buffer": "~5.1.1",
+        "string_decoder": "~1.1.1",
+        "util-deprecate": "~1.0.1"
+      }
+    },
+    "readdirp": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz",
+      "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==",
+      "dev": true,
+      "requires": {
+        "picomatch": "^2.0.4"
+      }
+    },
+    "require-directory": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+      "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
+      "dev": true
+    },
+    "require-main-filename": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+      "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
+      "dev": true
+    },
+    "rimraf": {
+      "version": "2.7.1",
+      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+      "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+      "requires": {
+        "glob": "^7.1.3"
+      }
+    },
+    "safe-buffer": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+    },
+    "safer-buffer": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+    },
+    "sax": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+      "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
+    },
+    "semver": {
+      "version": "5.7.1",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+      "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+    },
+    "set-blocking": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+      "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
+    },
+    "shebang-command": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+      "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+      "dev": true,
+      "requires": {
+        "shebang-regex": "^1.0.0"
+      }
+    },
+    "shebang-regex": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+      "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+      "dev": true
+    },
+    "signal-exit": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
+      "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA=="
+    },
+    "sprintf-js": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+      "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+      "dev": true
+    },
+    "string-width": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+      "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+      "requires": {
+        "code-point-at": "^1.0.0",
+        "is-fullwidth-code-point": "^1.0.0",
+        "strip-ansi": "^3.0.0"
+      }
+    },
+    "string.prototype.trimend": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz",
+      "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==",
+      "dev": true,
+      "requires": {
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.17.5"
+      }
+    },
+    "string.prototype.trimleft": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz",
+      "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==",
+      "dev": true,
+      "requires": {
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.17.5",
+        "string.prototype.trimstart": "^1.0.0"
+      }
+    },
+    "string.prototype.trimright": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz",
+      "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==",
+      "dev": true,
+      "requires": {
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.17.5",
+        "string.prototype.trimend": "^1.0.0"
+      }
+    },
+    "string.prototype.trimstart": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz",
+      "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==",
+      "dev": true,
+      "requires": {
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.17.5"
+      }
+    },
+    "string_decoder": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+      "requires": {
+        "safe-buffer": "~5.1.0"
+      }
+    },
+    "strip-ansi": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+      "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+      "requires": {
+        "ansi-regex": "^2.0.0"
+      }
+    },
+    "strip-eof": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+      "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
+      "dev": true
+    },
+    "strip-json-comments": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+      "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo="
+    },
+    "supports-color": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
+      "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+      "dev": true,
+      "requires": {
+        "has-flag": "^3.0.0"
+      }
+    },
+    "tar": {
+      "version": "4.4.13",
+      "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz",
+      "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==",
+      "requires": {
+        "chownr": "^1.1.1",
+        "fs-minipass": "^1.2.5",
+        "minipass": "^2.8.6",
+        "minizlib": "^1.2.1",
+        "mkdirp": "^0.5.0",
+        "safe-buffer": "^5.1.2",
+        "yallist": "^3.0.3"
+      }
+    },
+    "to-regex-range": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+      "dev": true,
+      "requires": {
+        "is-number": "^7.0.0"
+      }
+    },
+    "universal-user-agent": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-2.1.0.tgz",
+      "integrity": "sha512-8itiX7G05Tu3mGDTdNY2fB4KJ8MgZLS54RdG6PkkfwMAavrXu1mV/lls/GABx9O3Rw4PnTtasxrvbMQoBYY92Q==",
+      "dev": true,
+      "requires": {
+        "os-name": "^3.0.0"
+      }
+    },
+    "url-template": {
+      "version": "2.0.8",
+      "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz",
+      "integrity": "sha1-/FZaPMy/93MMd19WQflVV5FDnyE=",
+      "dev": true
+    },
+    "util-deprecate": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
+    },
+    "which": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+      "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+      "dev": true,
+      "requires": {
+        "isexe": "^2.0.0"
+      }
+    },
+    "which-module": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+      "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
+      "dev": true
+    },
+    "wide-align": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
+      "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
+      "requires": {
+        "string-width": "^1.0.2 || 2"
+      }
+    },
+    "windows-release": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.3.0.tgz",
+      "integrity": "sha512-2HetyTg1Y+R+rUgrKeUEhAG/ZuOmTrI1NBb3ZyAGQMYmOJjBBPe4MTodghRkmLJZHwkuPi02anbeGP+Zf401LQ==",
+      "dev": true,
+      "requires": {
+        "execa": "^1.0.0"
+      }
+    },
+    "wrap-ansi": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
+      "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
+      "dev": true,
+      "requires": {
+        "ansi-styles": "^3.2.0",
+        "string-width": "^3.0.0",
+        "strip-ansi": "^5.0.0"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+          "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+          "dev": true
+        },
+        "is-fullwidth-code-point": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+          "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+          "dev": true
+        },
+        "string-width": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+          "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+          "dev": true,
+          "requires": {
+            "emoji-regex": "^7.0.1",
+            "is-fullwidth-code-point": "^2.0.0",
+            "strip-ansi": "^5.1.0"
+          }
+        },
+        "strip-ansi": {
+          "version": "5.2.0",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+          "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^4.1.0"
+          }
+        }
+      }
+    },
+    "wrappy": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
+    },
+    "y18n": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
+      "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
+      "dev": true
+    },
+    "yallist": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+      "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
+    },
+    "yargs": {
+      "version": "13.3.2",
+      "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
+      "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
+      "dev": true,
+      "requires": {
+        "cliui": "^5.0.0",
+        "find-up": "^3.0.0",
+        "get-caller-file": "^2.0.1",
+        "require-directory": "^2.1.1",
+        "require-main-filename": "^2.0.0",
+        "set-blocking": "^2.0.0",
+        "string-width": "^3.0.0",
+        "which-module": "^2.0.0",
+        "y18n": "^4.0.0",
+        "yargs-parser": "^13.1.2"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+          "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+          "dev": true
+        },
+        "is-fullwidth-code-point": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+          "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+          "dev": true
+        },
+        "string-width": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+          "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+          "dev": true,
+          "requires": {
+            "emoji-regex": "^7.0.1",
+            "is-fullwidth-code-point": "^2.0.0",
+            "strip-ansi": "^5.1.0"
+          }
+        },
+        "strip-ansi": {
+          "version": "5.2.0",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+          "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^4.1.0"
+          }
+        }
+      }
+    },
+    "yargs-parser": {
+      "version": "13.1.2",
+      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
+      "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
+      "dev": true,
+      "requires": {
+        "camelcase": "^5.0.0",
+        "decamelize": "^1.2.0"
+      }
+    },
+    "yargs-unparser": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz",
+      "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==",
+      "dev": true,
+      "requires": {
+        "flat": "^4.1.0",
+        "lodash": "^4.17.15",
+        "yargs": "^13.3.0"
+      }
+    }
+  }
+}
index 77e9aeae5fe80dff17aeb2462065e2df631e86ba..aa7275e1adbc0e0f8714dda7bfa4c7d142e404ad 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "opencc",
-  "version": "1.0.5",
+  "version": "1.0.6",
   "description": "Conversion between Traditional and Simplified Chinese",
   "author": "BYVoid <byvoid@byvoid.com>",
   "license": "Apache-2.0",
@@ -10,6 +10,9 @@
     "deploy": "node-pre-gyp package && (node-pre-gyp-github publish --release || exit 0)",
     "install": "node-pre-gyp install --fallback-to-build || node-pre-gyp rebuild"
   },
+  "engines": {
+    "node": ">= 8.0.0"
+  },
   "binary": {
     "module_name": "opencc",
     "module_path": "./build/Release/",
     "Traditional Chinese"
   ],
   "devDependencies": {
-    "mocha": "^3.5.0",
-    "node-pre-gyp-github": "^1.3.1"
+    "mocha": "^7.1.1",
+    "node-pre-gyp-github": "^1.4.3"
   },
   "dependencies": {
-    "nan": "^2.7.0",
-    "node-pre-gyp": "^0.6.36"
+    "nan": "^2.14.0",
+    "node-pre-gyp": "^0.14.0"
   }
-}
+}
\ No newline at end of file
index 498a4f6be46a82343e1798ffa79500a58fb4cbe8..234dc85c386eb0464ae5ae6622e89fd9c506d98f 100644 (file)
@@ -86,6 +86,7 @@ install(
   TARGETS libopencc
   LIBRARY DESTINATION ${DIR_LIBRARY}
   ARCHIVE DESTINATION ${DIR_LIBRARY}
+  RUNTIME DESTINATION bin
 )
 
 install(
index 495ab31ad28fd608648d56dc772357b53b49844b..2d5cf7b17ed906169518fd865c8da5b450d5b50a 100644 (file)
@@ -1,4 +1,4 @@
-/*
+/*
  * Open Chinese Convert
  *
  * Copyright 2015 BYVoid <byvoid@byvoid.com>
index e105bab72a8e050d367fcd2d6cdf4e9c75417e9f..79026a000cdd1e76913c816ddf53f1aef31ef32e 100644 (file)
@@ -16,8 +16,8 @@
  * limitations under the License.
  */
 
-#include "gtest/gtest.h"
 #include "Common.hpp"
+#include "gtest/gtest.h"
 
 namespace opencc {
 
@@ -96,6 +96,7 @@ TEST_P(ConfigurationTest, Convert) {
 
 INSTANTIATE_TEST_CASE_P(CommandLine, ConfigurationTest,
                         ::testing::Values("s2t", "t2s", "s2tw", "s2twp", "tw2s",
-                                          "tw2sp", "s2hk", "hk2s"));
+                                          "tw2sp", "s2hk", "hk2s", "t2jp",
+                                          "jp2t"));
 
 } // namespace opencc
diff --git a/test/testcases/jp2t.ans b/test/testcases/jp2t.ans
new file mode 100644 (file)
index 0000000..9cbcdcf
--- /dev/null
@@ -0,0 +1,4 @@
+舊字體歷史假名遣 新字體現代假名遣
+橫濱 絲魚川 伊豫國
+驛辨當 辨別 辯護士 瓣膜
+藝術 缺航 欠缺 飲料罐
\ No newline at end of file
diff --git a/test/testcases/jp2t.in b/test/testcases/jp2t.in
new file mode 100644 (file)
index 0000000..9178c8a
--- /dev/null
@@ -0,0 +1,4 @@
+旧字体歴史仮名遣 新字体現代仮名遣
+横浜 糸魚川 伊予国
+駅弁当 弁別 弁護士 弁膜
+芸術 欠航 欠缺 飲料缶
\ No newline at end of file
diff --git a/test/testcases/t2jp.ans b/test/testcases/t2jp.ans
new file mode 100644 (file)
index 0000000..c5e8a38
--- /dev/null
@@ -0,0 +1,4 @@
+旧字体歴史仮名遣 新字体現代仮名遣
+横浜 糸魚川 伊予国
+駅弁当 弁別 弁護士 弁膜
+芸術 欠航 飲料缶
\ No newline at end of file
diff --git a/test/testcases/t2jp.in b/test/testcases/t2jp.in
new file mode 100644 (file)
index 0000000..c2626d2
--- /dev/null
@@ -0,0 +1,4 @@
+舊字體歷史假名遣 新字體現代假名遣
+橫濱 絲魚川 伊豫國
+驛辨當 辨別 辯護士 瓣膜
+藝術 缺航 飲料罐
\ No newline at end of file